﻿/***************************************************************
 * 开发人员：网魂小兵@http://www.mozlite.com
 * 
 * 数据库查询实例基类。
 * 
 * 最后修改：2011-10-31
 * ************************************************************/
namespace Mozlite.Common
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Mozlite.Common.Configuration;

    /// <summary>
    /// 数据库查询实例基类。
    /// </summary>
    public abstract class QueryBase
    {
        /// <summary>
        /// 实例化<see cref="T:Mozlite.Common.QueryBase"/>。
        /// </summary>
        protected QueryBase() {
            this.PageSize = 20;
            this.IsDesc = true;
        }

        private int settingsID = -1;
        /// <summary>
        /// 网站设置ID。
        /// </summary>
        public int SettingsID {
            get {
                if (settingsID == -1)
                {
                    settingsID = SiteSettings.Current.SettingsID;
                    if (settingsID == 0)
                        settingsID = SiteSettings.Default.SettingsID;
                }
                return settingsID;
            }
            set {
                settingsID = value;
            }
        }

        /// <summary>
        /// 当前页码，从0开始。
        /// </summary>
        public int PageIndex { get; set; }
        /// <summary>
        /// 每页显示记录数。
        /// </summary>
        public int PageSize { get; set; }
        /// <summary>
        /// 排序列集合。
        /// </summary>
        public string OrderBy { get; set; }
        /// <summary>
        /// 是否为降序排列。
        /// </summary>
        public bool IsDesc { get; set; }
        /// <summary>
        /// 得到排序语句。
        /// </summary>
        /// <returns></returns>
        public virtual string ToOrderBySQL() { 
            string sql = "";
            if (!string.IsNullOrEmpty(OrderBy))
            {
                sql += "ORDER BY " + OrderBy.SQLEncode() + " ";
                if (IsDesc)
                    sql += "DESC ";
            }
            return sql;
        }
    }
}
